package Logica_Moviemientos;

import TDA_Lista.*;
import javax.swing.*;
import Mapa.*;
import Objetos.*;

public class Actualizador extends Thread{
	protected Mapa mapa;
	protected JPanel pObjetos;
	protected boolean mover;
	
	/**Constructor. */
	public Actualizador(JPanel po, Mapa map){
		pObjetos = po;
		mapa = map;
		mover =  false;
	}
	
	/**Elimina los objetos del mapa que no se utilizaran mas. */
	private void removerObjetos(){
		for(Position<Objeto> o : mapa.obtenerObjetos().positions()){
			if(o.element().getX() < pObjetos.getLocation().x * -1 - 32){
				mapa.removerObjeto(o);
				pObjetos.remove(o.element());
			}
		}
	}
	
	/**Modifica si se puede mover o no el mapa. */
	public void setMover(boolean m){
		mover = m;
	}
	
	public void run(){
		while(true){
			try{
				if(mover){
					if(!mapa.colisionADerecha(mapa.obtenerMario())){
						pObjetos.setLocation(pObjetos.getLocation().x - 4, pObjetos.getLocation().y);
						mapa.obtenerMario().setPosicion(mapa.obtenerMario().obtenerX() + 4, mapa.obtenerMario().obtenerY());
						removerObjetos();
					}
				}
				Thread.sleep(30);
			} catch (Exception e){
				System.out.println("Actualizador :: run()");
			}
		}
	}
	
}
